package com.xiye.system.service.role.impl;

import java.util.List;

import com.xiye.system.service.role.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xiye.system.dao.DaoSupport;
import com.xiye.common.entity.Page;
import com.xiye.common.entity.Role;

import com.xiye.common.entity.PageData;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author 西野
 * @version V1.0
 * @title RoleServiceImpl.java
 * @package com.xiye.system.service.role.impl
 * @description 角色
 * @date 2018-07-12
 */
@Transactional
@Service("roleService")
@SuppressWarnings("unchecked")
public class RoleServiceImpl implements RoleService {

    @Autowired
    private DaoSupport dao;

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 列出此组下级角色
     * @Param [pd]
     * @Return java.util.List<com.xiye.common.entity.Role>
     */
    public List<Role> listAllRolesByPId(PageData pd) {
        return (List<Role>) dao.findForList("RoleMapper.listAllRolesByPId", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 列出此组下级角色分页
     * @Param [pd]
     * @Return java.util.List<com.xiye.common.entity.Role>
     */
    public List<PageData> listAllRolesByPId(Page page) {
        return (List<PageData>) dao.findForList("RoleMapper.listAllRolesByPIdlistPage", page);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过id查找
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData findObjectById(PageData pd) {
        return (PageData) dao.findForObject("RoleMapper.findObjectById", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过角色编码查找
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData getRoleByRnumber(PageData pd) {
        return (PageData) dao.findForObject("RoleMapper.getRoleByRnumber", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 添加
     * @Param [pd]
     * @Return void
     */
    public void add(PageData pd) {
        dao.save("RoleMapper.insert", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 保存修改
     * @Param [pd]
     * @Return void
     */
    public void edit(PageData pd) {
        dao.update("RoleMapper.edit", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 删除角色
     * @Param [ROLE_ID]
     * @Return void
     */
    public void deleteRoleById(String ROLE_ID) {
        dao.delete("RoleMapper.deleteRoleById", ROLE_ID);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 给当前角色附加菜单权限
     * @Param [role]
     * @Return void
     */
    public void updateRoleRights(Role role) {
        dao.update("RoleMapper.updateRoleRights", role);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过id查找
     * @Param [ROLE_ID]
     * @Return com.xiye.common.entity.Role
     */
    public Role getRoleById(String ROLE_ID) {
        return (Role) dao.findForObject("RoleMapper.getRoleById", ROLE_ID);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 给全部子角色加菜单权限
     * @Param [pd]
     * @Return void
     */
    public void setAllRights(PageData pd) {
        dao.update("RoleMapper.setAllRights", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 权限(增删改查)
     * @Param [msg, pd]
     * @Return void
     */
    public void saveB4Button(String msg, PageData pd) {
        dao.update("RoleMapper." + msg, pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过角色ID数组获取角色列表
     * @Param [arryROLE_ID]
     * @Return java.util.List<com.xiye.common.entity.Role>
     */
    public List<Role> getRoleByArryROLE_ID(String[] arryROLE_ID) {
        return (List<Role>) dao.findForList("RoleMapper.listAllRolesByArryROLE_ID", arryROLE_ID);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 角色列表(弹窗选择用)
     * @Param [page]
     * @Return java.util.List<com.xiye.common.entity.PageData>
     */
    public List<PageData> roleListWindow(Page page) {
        return (List<PageData>) dao.findForList("RoleMapper.roleWindowlistPage", page);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 修改角色状态开启或者关闭
     * @Param [pd]
     * @Return void
     */
    public void upStatus(PageData pd) {
        dao.update("RoleMapper.upStatus", pd);
    }

}
